import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;

import es.uca.gii.csi.Shield.data.Agente;
import es.uca.gii.csi.Shield.data.Data;
import es.uca.gii.csi.Shield.util.Config;


	/**
	 * @throws Exception
	 */
	private static void LoadDriver() throws Exception
	{
		Class.forName(Config.Properties(Data.getPropertiesUrl())
					  .getProperty("jdbc.driverClassName")).newInstance();
	}
	
	/**
	 * Realiza la conexinn con la BD
	 * @param sTable, sField, iCount
	 * @throws Exception
	 */
    private static void TestConnection(String sTable,String sField,int iCount) throws Exception
    {
	   
       Connection connection = null;
       ResultSet resultSet = null;
       try 
       {
           connection = Data.Connection();
           resultSet = connection.createStatement().executeQuery(
        		   String.format("SELECT %s FROM %s limit (%d-1),%d"
        				   ,sField,sTable,iCount,iCount));
           
           while (resultSet.next())
        	   System.out.println(sField + ": " + resultSet.getString(sField) + " ");
       }catch (SQLException ee) { throw ee; }
       finally 
       {
           if (resultSet != null) resultSet.close();
           if (connection != null) connection.close();
       }
    }
    
    /**
	 * Realiza la insercinn de un nuevo agente
	 * @param iIdentificador, sNombre, iAnoServicio, tFechaValidezLicencia
	 * @throws Exception
	 */
	public static void TestInsertion(String sNombre, int iAnoServicio/*, 
			Date tFechaValidezLicencia*/ ) throws Exception
	{
		Connection connection = null;
	    ResultSet resultSet = null;
	    try 
	       {
	           connection = Data.Connection();
	           Agente.New (sNombre, iAnoServicio/*, tFechaValidezLicencia */);
	       }
	       catch (SQLException ee) { throw ee; }
	       finally 
	       {
	           if (resultSet != null) resultSet.close();
	           if (connection != null) connection.close();
	       }
	}
	
	/**
	 * Realiza una consulta con los datos facilitados del agente
	 * @param iIdentificador, sNombre, iAnoServicio, tFechaValidezLicencia
	 * @throws Exception
	 */
	public static void TestSelect(int iIdentificador, String sNombre, int iAnosServicio/*,
					     		  Date tFechaValidezLicencia*/) throws Exception
	{
		Agente.Select(iIdentificador, sNombre, iAnosServicio/*, tFechaValidezLicencia */);
	}
	
	/**
	 * Actualiza los datos del agente, con los datos facilitados del agente
	 * @param iIdentificador, sNombre, iAnoServicio, tFechaValidezLicencia
	 * @throws Exception
	 */
	public static void TestUpdate( Agente agente) throws Exception
	{
		agente.Update();
	}
	
	/**
	 * Elimina el agente con el identificador indicado
	 * @param iIdentificador
	 * @throws Exception
	 */
	public static void TestDelete(Agente agente) throws Exception
	{
		agente.Delete();
	}
	/*
	public static void main(String[] args) throws Exception
{
		int iIdentificador;
		String sNombre;
		int iAnosServicio, ianos;
		Calendar tCal;
		Date tFecha;
		SimpleDateFormat formato;
		LoadDriver();
		BufferedReader dato = new BufferedReader( new InputStreamReader(System.in));
		System.out.println( "Elige una opcion" );
		System.out.println( "1- Registrar Agente" );
		System.out.println( "2- Buscar Agente" );
		System.out.println( "3- Actualizar datos agente" );
		System.out.println( "4- Eliminar Agente" );
		
		int opcion = Integer.parseInt(dato.readLine());
		switch(opcion)
		{
			case 1: System.out.println("Inserta nombre");
		        	sNombre = dato.readLine();
		        	System.out.println("Inserta anos de servicio");
		        	iAnosServicio = Integer.parseInt(dato.readLine());
		        	System.out.println("Introduce los anos de validez de la licencia (a partir del dia de hoy)");
		        	ianos = Integer.parseInt(dato.readLine());
		        	
		        	//Creamos una instancia de Calendar
		        	tCal = Calendar.getInstance();
		        	//Le sumamos el número de anos a la fecha actual
		        	tCal.add( Calendar.YEAR, ianos );
		        	
		        	formato = new SimpleDateFormat("yyyy/mm/dd");
		        	formato.format(tCal);
		        	tFecha = new Date();
		        	tFecha = tCal.getTime();
		        	TestInsertion(sNombre,iAnosServicio/*,tFecha*//*);
		        	break;
		        	
			case 2: System.out.println( "Insertar identificador" );
					iIdentificador = Integer.parseInt(dato.readLine());
					System.out.println("Inserta nombre");
		        	sNombre = dato.readLine();
		        	System.out.println("Inserta anos de servicio");
		        	iAnosServicio = Integer.parseInt(dato.readLine());
		        	System.out.println("Introduce la fecha de validez de la licencia (dd/mm/yyyy)");
		        	String sFecha = dato.readLine();
		        	
		        	
		        	tCal = Calendar.getInstance();
		        	tCal.set(1,2,3);
		        	formato = new SimpleDateFormat("yyyy/mm/dd");
		        	formato.format(tCal);
		        	tFecha = new Date();
		        	tFecha = tCal.getTime();
		        	
		        	//
		        	TestSelect(iIdentificador, sNombre, iAnosServicio, tFecha);
		        	break;
			case 3: System.out.println( "Insertar identificador" );
					iIdentificador = Integer.parseInt(dato.readLine());
		        	
		        	System.out.println(iIdentificador);
		        	//Creamos una instancia de agente, buscándolo en la base de datos, dado el identificador
		        	Agente agenteActualizar = new Agente(iIdentificador);
		        	System.out.println(agenteActualizar.toString());
		        	//Modificamos los valores de los campos
		        	System.out.println("Modificar nombre");
		        	sNombre = dato.readLine();
		        	System.out.println("Modificar anos de servicio");
		        	iAnosServicio = Integer.parseInt(dato.readLine());
		        	/*System.out.println("Modificar los anos de validez de la licencia");
		        	ianos = Integer.parseInt(dato.readLine());
		        	
		        	// Establecemos la fecha de validez en función de los anos indicados
		        	tCal = Calendar.getInstance();
		        	//tCal.add( Calendar.YEAR, ianos );
		        	//Y la pasamos a formato Fecha
		        	formato = new SimpleDateFormat("yyyy/mm/dd");
		        	formato.format(tCal);
		        	tFecha = new Date();
		        	tFecha = tCal.getTime();
		        	
		        	agenteActualizar.setNombre(sNombre);
		        	agenteActualizar.setAnosServicio(iAnosServicio);
		        	/*agenteActualizar.setFechaValidezLicencia(tFecha);
		        	
		        	//Actualizamos los valores del agente
		        	TestUpdate(agenteActualizar);
		        	break;
			case 4: System.out.println( "Insertar identificador" );
					iIdentificador = dato.read();
					
					//Creamos una instancia de agente, buscándolo en la base de datos, dado el identificador
					Agente agenteEliminar = new Agente(iIdentificador);
					
					//Eliminamos el agente de la base de datos
					TestDelete( agenteEliminar );
					break;
			default: System.out.println( "Opcion incorrecta" );
		}
	}*/
	